home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d11 / ansidrv.arc / WP501101.NN < prev   
Text File  |  1991-04-17  |  13KB  |  221 lines

  1.                           INTEROFFICE MEMORANDUM
  2.  
  3.         DATE:    April 17, 1991       FROM:    Info. Center/
  4.      PRODUCT:    WordPerfect       VERSION:    5.0 RELEASE DATE:    n/a
  5.      SUBJECT:    Using the ANSI Driver
  6.  
  7.                   Using the ANSI Driver by C. Scot Giles
  8.  
  9. This essay is an attempt to explain how I use the ANSI.SYS driver to configure the function keys on my computer, and to control the screen.
  10.  
  11. This essay covers only IBM Personal Computers (PC, XT or AT) running DOS 2.n or greater.  I have no experience with compatibles, so you are on your own if you try to use these techniques with one.
  12.  
  13. LOADING THE ANSI DRIVER
  14. In order to use any of the techniques in this essay, you mustfirst have loaded the ANSI.SYS driver into your computer's memory using your CONFIG.SYS file.  You do this by adding the line:  DEVICE=ANSI.SYS somewhere in the CONFIG.SYS file and rebooting your computer.
  15.  
  16.  
  17. KEYBOARD REASSIGNMENT WITH ANSI
  18. Before we get to specific ways to send control codes to the (now loaded) ANSI driver, you must first know what those codes mean.  For the function keys, the codes are listed on the chart below which first appeared in SOFTALK magazine.  Each function key is assigned an "extended function code" which DOS will use to recognize that a function key has been pressed and in what shift modei, if any.  Each number is expresses as 0 followed by a semi-colon (;), then the number from the chart below.
  19.  
  20.     KEY        NORMAL        SHIFT    CONTROL        ALT
  21.     F1        59            84            94        104
  22.     F2        60            85            95        105
  23.     F3        61            86            96        106
  24.     F4        62            87            97        107
  25.     F5        63            88            98        108
  26.     F6        64            89            99        109
  27.     F7        65            90            100        110
  28.     F8        66            91            101        111
  29.     F9        67            92            102        112
  30.     F10        68            93            103        113
  31.  
  32.  
  33. Accordingly, the way to designate the F5 key would be 0;63 while the F10 key would be designated by 0;68 or 0;113 if the ALT key is used.
  34.  
  35. If you examine the DOS Technical Reference Manual (not the Technical Manual for PC hardware), you will find a section on SCREEN/KEYS.  This section was contained in the DOS 2.0 documentation, but IBM removed it in later editions.  Here is a summary of its contents relative to keyboard redefinition.
  36.  
  37. To change one key to have the meaning of another, enter:  ESC [#;#p where the first # is the ASCII value of the key being changed and the second # is the ASCII value of the new definition.  For example, "A" has the ASCII value of 65 and "Q" has the value of 81.  So:  ESC [65;81p  will result in "A" being redefined as "Q."  It is also possible to redefine a key to have the meaning of a string of characters.  This is done by enclosing the string in quotes.  So:  ESC [65;"Hi there"p would change the "A" key to have the meaning of "Hi there."  If the first value for the first # is a 0 however, DOS knows that what is being changed is not an ASCII value but the meaning of an extended function code.  So if you were to enter:  ESC [0;68;"Hi there"p
  38.  
  39.  
  40. DOS would know to change the meaning of the function key (in this case F10) to the string enclosed in quotes.  This is the key to redefining your function keys to perform much used commands: like DIR, CHKDSK, COPY *.* B: etc. or to load programs from disk.
  41.  
  42. There is a final trick here.  If you end the escape command sequence with the characters ";13p" instead of just "p" the command will self-execute, just as if you pressed the [Enter] key.
  43.  
  44. The IBM documentation tells the user to preface each command by an ESC command, and I have represented this in the above paragraphs by writing the characters "ESC" at the start of each control code sequence mentioned.  Most users assume that this means to press the ESC key on the keyboard when entering the commands.  Not so.  To get the Escape Sequence to the ANSI driver you must enter it using a prompt command or write a .COM file.  For example to configure the F1 key (extended function code 59) to have the meaning in DOS of "autoexec" with an [Enter] command at the iend of it you cannot type:  ESC [0;59;"autoexec";13p as the ESC will not be recognized by DOS as an escape sequence.  What DOS will recognize as an escape sequence is the characters "$e" although this surely looks strange at first.  Users familiar with the PROMPT command will notice that the "$" character is what the PROMPT command uses as an escape sequence, and that is precisely how we will get the redefinition to be recognized by DOS.  If you enter the following command:  PROMPT $e[O;59;"autoexec";13p  you will see that it works perfectly.  You now have the secret to redefining the function keys in DOS.  Simply write and run a batch file with a list of PROMPT commands and you will have done it.  One precaution, ECHO must be ON, otherwise DOS will suppress the PROMPT command and the escape sequences will not go through.
  45.  
  46.  
  47. As an example, let's create a batch file called KEYON.BAT that will set F1 as EDITOR [Enter], F2 as PC-FILE [Enter], F3 as PC-CALC [Enter], F4 as PC- GRAPH [Enter], F5 as PC-TALK [Enter], F6 as PC-WRITE [Enter], F7 as BASICA [Enter], F8 as DIR without the [Enter], F9 to run a batch file called MENUOFF.BAT [Enter], and F10 to run a batch file called MENUON.BAT [Enter].  It would be as follows
  48.  
  49.             echo on
  50.             PROMPT $e[0;59;"EDITOR";13p
  51.             PROMPT $e[0;60;"PC-FILE;13p
  52.             PROMPT $e[0;61;"PC-CALC;13p
  53.             PROMPT $e[0;62;"PC-GRAPH;13p
  54.             PROMPT $e[0;63;"PC-TALK;13p
  55.             PROMPT $e[0;64;"PC-WRITE;13p
  56.             PROMPT $e[0;65;"BASICA";13p
  57.             PROMPT $e[0;66;"DIR"p
  58.             PROMPT $e[0;67;"MENUOFF";13p
  59.             PROMPT $e[0;68;"MENUON";13p
  60.             PROMPT
  61.             cls
  62.  
  63.  
  64. You would also want to create another file called KEYOFF.BAT which resets the function key definitions to DOS normal.  The format would be:
  65.  
  66.             echo on
  67.             PROMPT $e[0;59;0;59p
  68.             PROMPT $e[0;60;0;60p
  69.             PROMPT $e[0;61;0;61p
  70.             PROMPT $e[0;62;0;62p
  71.             PROMPT $e[0;63;0;63p
  72.             PROMPT $e[0;64;0;64p
  73.             PROMPT $e[0;65;0;65p
  74.             PROMPT $e[0;66;0;66p
  75.             PROMPT $e[0;67;0;67p
  76.             PROMPT $e[0;68;0;68p
  77.             PROMPT
  78.             cls
  79.  
  80.  
  81. I should mention that the purpose of the first blank PROMPT command in each of these batch files is to reset the DOS prompt to A> or whatever your default is.  It serves no redefinition purpose, but does keep the screen looking clean.
  82.  
  83. USING DEBUG TO LOAD THE ANSI DRIVER
  84. While there is no reason why we could not continue to configure our function keys by batch file consisting of lists of PROMPT commands, this is a clumsy way to proceed.  It is easier to use the DEBUG utility supplied with DOS to create a .COM file that will do the job for use quickly and directly, without sending any input to screen.  To my knowledge, this technique was first published by Michael J. Grabel in the December 1984 edition of PC WORLD.
  85.  
  86. Place a formatted DOS disk containing the DEBUG utility in the default drive, and follow the script below.  As you do so, hexadecimal numbers will appear on the left hand side of your screen.  For our purposes here, I will represent the numbers in the form xxxx:nnnn.  What you will see on your screen will be different.
  87.  
  88.  
  89. A>DEBUG [Enter]
  90. -A 100 [Enter]
  91. MOV AH,9 [Enter]
  92. MOV DX,109 [Enter]
  93. INT 21 [Enter]
  94.             INT 20 [Enter]
  95.             xxxx:nnnn DB 1B'[0;59;"EDITOR";13p [Enter]
  96.             xxxx:nnnn DB 1B'[0;50;"PC-FILE";13p [Enter]
  97.             xxxx:nnnn DB 1B'[0;50;"PC-CALC";13p [Enter]
  98.             xxxx:nnnn DB 1B'[0;50;"PC-GRAPH";13p [Enter]
  99.             xxxx:nnnn DB 1B'[0;50;"PC-TALK";13p [Enter]
  100.             xxxx:nnnn DB 1B'[0;50;"PC-WRITE";13p [Enter]
  101.             xxxx:nnnn DB 1B'[0;50;"BASICA";13p [Enter]
  102.             xxxx:nnnn DB 1B'[0;50;"DIR"p [Enter]
  103.             xxxx:nnnn DB 1B'[0;50;"MENUOFF";13p [Enter]
  104.             xxxx:nnnn DB 1B'[0;50;"MENUON";13p [Enter]
  105.             xxxx:nnnn DB 1B '$' [Enter]
  106.  
  107.  
  108. As soon as you have entered the previous line, your computer will respond with a number in the form of xxxx:nnnn.  Copy down the portion of the number that is being represented here as "nnnn" as you will need it later.  Once you have copied the number down, press [Enter].
  109.  
  110.             xxxx:nnnn [Enter]
  111.             -N KEYON.COM [Enter]
  112.             -R BX [Enter]
  113.  
  114. When you have entered the command above, your computer will respond with BX:0000 and a colon as a prompt.  At this prompt, enter 0 and press [Enter] then enter R CX at the - prompt.
  115.  
  116.             BX:0000
  117.             :0 [Enter]
  118.             -R CX [Enter]
  119.  
  120. When you enter the R CX command above, the computer will respond with CX 0000 and a colon as a prompt.  At this prompt, enter the number "nnnn" you copied down above and press [Enter] the enter W at the - prompt.
  121.  
  122.  
  123.             CX 0000
  124.             :nnnn [Enter]
  125.             -W [Enter]
  126.  
  127. The computer will respond with WRITING nnnn bytes and a - prompt.  Enter Q:
  128.  
  129.             WRITING nnnn bytes
  130.             -Q [Enter]
  131.  
  132. As soon as you enter the Q command (for Quit) you will be back at the DO"S prompt, and there will be a new file on disk called KEYON.COM.  Simply type it at the DOS prompt and your function keys will be configured.  It is a good idea to use this same procedure to write another .COM file called KEYOFF.COM which will restore the keys to their native DOS definitions.  The procedure for this is the same as the above, except that the definition section should be:
  133.  
  134.  
  135.             xxxx:nnnn DB 1B'[0;59;0;59p'[Enter]
  136.             xxxx:nnnn DB 1B'[0;60;0;60p'[Enter]
  137.             xxxx:nnnn DB 1B'[0;61;0;61p'[Enter]
  138.             xxxx:nnnn DB 1B'[0;62;0;62p'[Enter]
  139.             xxxx:nnnn DB 1B'[0;63;0;63p'[Enter]
  140.             xxxx:nnnn DB 1B'[0;64;0;64p'[Enter]
  141.             xxxx:nnnn DB 1B'[0;65;0;65p'[Enter]
  142.             xxxx:nnnn DB 1B'[0;66;0;66p'[Enter]
  143.             xxxx:nnnn DB 1B'[0;67;0;67p'[Enter]
  144.             xxxx:nnnn DB 1B'[0;68;0;68p'[Enter]
  145.             xxxx:nnnn DB 1B '$'[Enter]
  146.  
  147. If you find that KEYON.COM doesn't work correctly, reboot the machine to clear the definitions and try again.  The most common mistakes are typing errors (I often enter a colon when I wanted a semi-colon).  Another source of difficulty will arise if you have another file on disk to start with called KEYON.COM or KEYOFF.COM.  DEBUG bypasses the normal file allocation of DOS and writes directly to disk.  If you have another file on disk wityh the same name, DEBUG will overwrite it, but unless the other file was exactly the same size or smaller than the one, there may be a piece of the old file left over attached to the end of the new one.  As a precaution, always erase old version of the .COM files, or better yet, give each one a unique name and rename it later using the DOS Rename command.
  148.  
  149.  
  150. SOME ADDITIONAL TRICKS
  151. Here are some additional control codes for the ANSI driver, summarized from the IBM material.
  152.  
  153. CURSOR POSITIONING
  154. To move the cursor to a specified position: ESC [#;#h where the first # is the desired line number and the second the desired column.
  155.  
  156. To move the cursor up without changing columns: ESC [#a where # specifies the number of lines moved.
  157.  
  158. To move the cursor to a specified horizontal and vertical position: ESC #;#f where # means first the line number and secondly the column number.
  159.  
  160. To get a device status report: ESC [6n
  161.  
  162. To get a cursor position report: ESC [#;#r where the first # specifies the current line and the second # specifies the current column.
  163.  
  164. To move the cursor down:  ESC [#b where # specifies the number of lines moved down.
  165.  
  166.  
  167. To move the cursor forward:  ESC [#C where # specifies the number of columns moved.
  168.  
  169. To move the cursor backward:  ESC [#d where # specifies the number of columns moved.
  170.  
  171. To save the cursor position:  ESC [s and to restore it:  ESC [u.
  172.  
  173. ERASING
  174. To do a CLS (erase screen; move cursor to home position): ESC [2j
  175.  
  176. To erase from cursor to end of line:  ESC [k
  177.  
  178.  
  179. COLOR GRAPHICS
  180. To set the color/graphics attributes, enter ESC [#;#m where the first # is the desired foreground color and the second is the desired background color, select colors from list below:
  181.  
  182.             30   black foreground
  183.             31   red foreground
  184.             32   green foreground
  185.             33   yellow foreground
  186.             34   blue foreground
  187.             35   magenta foreground
  188.             36   cyan foreground
  189.             37   white foreground
  190.  
  191.             40   black background
  192.             41   red background
  193.             42   green background
  194.             43   yellow background
  195.             44   blue background
  196.             45   magenta background
  197.             46   cyan background
  198.             47   white background
  199.  
  200.  
  201. To set additional attributes enter:  ESC [#m where # is the number of the desired attribute.  Select attributes from the list belos:
  202.  
  203.             0    all attributes off (white and black)
  204.             1    bold on
  205.             4    underscore on (on IBM Monochrome Display)
  206.             5    blink
  207.             7    reverse video
  208.             8    invisible
  209.  
  210. To give an example of what can be done with these additional codes, a batch file called MENUOFF.BAT containing only the line:  PROMPT #e[2J#e[30;40m$h would blank a color display completely.  It does a CLS, sets the display to a black foreground and background and with the "#h" performas a backspace to erase the blinking cursor (the "$h" command is documented in the DOS manual under PROMPT).  Another batch file called MENUON.BAT containing the lines:
  211.  
  212.  
  213.             PROMPT $e [0m
  214.             prompt
  215.             cls
  216.  
  217. Would reset a color display to restore the screen after MENUOFF.BAT had been run.
  218.  
  219. Enjoy ANSI!  It is a wonderful tool, and can be a lot of fun to use.  It is not ka keyboard enhanced, and if you load it up with too many keyboard redefinitions at one time, you will run out of environment space.  This is harmless and simply means that ANSI is full.  But it will work fine to define your function keys and control your screen.
  220.  
  221. Memo ID:    WP50_1101